图解PKCS#1(合) | 您所在的位置:网站首页 › pkcs 11库 › 图解PKCS#1(合) |
0. 版本更新说明
版本更新情况简要说明: V2.2:主要是增加了三个杂凑函数:SHA-224、SHA-512/224、SHA-512/256。 3. 密钥公钥 (n, e) 私钥 (n, d) 或者(p, q, dP, dQ, qInv), dP=d mod p-1,dQ=d mod q-1,【即e · dP = 1 mod p–1,e · dQ = 1 mod q–1】q* qInv=1 mod p注解: dP, dQ,的出现是为了用CRT求 Cd mod n 因为dP=d mod p-1,dQ=d mod q-1,→ CdP=Cd mod p,CdQ=Cd mod q 所以计算Cd mod n改为计算同余式组 x=CdP mod p,x=CdQ mod q,计算出的x即为Cd mod n 4. 数据类型转化I2OSP 整数→字符串 (Integer → Octet-String),字符串采用大端表示 OS2IP 字符串→整数 (Octet-String → Integer),字符串采用大端表示 5. 密码算法 5.1 加密解密 5.1.1 加密解密——加密RSAEPc = me mod n. 5.1.2 加密解密——解密RSADP 若私钥为(n, d)m = cd mod n. 若私钥为 (p, q, dP, dQ, qInv)m1 = cdP mod p. m2 = cdQ mod q. h = qInv * (m1 – m2) mod p. m = m2 + h q. (其中q*qInv = 1 (mod p)) 5.2签名验证 5.2.1 签名验证——签名RSASP1 若私钥为(n, d)s = md mod n. 若私钥为(p, q, dP, dQ, qInv))s1 = mdP mod p. s2 = mdQ mod q. h = qInv * (s1–s2 ) mod p. s = s2 + h q. 5.2.2 签名验证——验证RSAVP1m = se mod n 7&8&9. 加密/签名/编码方案 *.*四种方案表1加密/签名/编码方案 两种加密方案 编码方案 加解密 备注 RSAES-OAEP EME-OAEP RSAEP/RSADP 推荐使用 RSAESPKCS1-v1_5 EME-PKCS-v1_5 RSAEP/RSADP 兼容老版本用 两种签名方案 编码方案 加解密 备注 RSASSA-PSS EMSA-PSS RSASP1/RSAVP1 推荐使用 RSASSA-PKCS1-v1_5 EMSAPKCS1-v1_5 RSASP1/RSAVP1 兼容老版本用 7.1.1&7.1.2 EME-OAEP编码方案EME-OAEP-encode(§7.1.1, 见图1) 输入:M 消息;L可选的标签 输出:EM 编码后的消息 EME-OAEP-decode(§7.1.2,见图1) 输入:EM 编码后的消息;L可选的标签 输出:M 消息 图1 EME-OAEP编解码方案 7.2.1&7.2.2 EME-PKCS-v1_5编码方案EME-PKCS-v1_5-encode(§7.2.1, 见图2) 输入:M 消息 输出:EM 编码后的消息 EME-PKCS-v1_5-decode(§7.2.2, 见图2) 输入:EM 编码后的消息 输出:M 消息 图2 EME-PKCS-v1_5编解码方案 9.1.1&9.1.2 EMSA-PSS编码方案EMSA-PSS-ENCODE:(§9.1.1,见图3) 输入: M 消息; emBits 整数OS2IP (EM) 的最大比特长度,>= 8hLen + 8sLen + 9 (sLen为salt的字节长度) 输出: EM 编码后的消息,字节长度为 EMSA-PSS-VERIFY:(§9.1.2,见图3) 输入: M 消息; EM 编码后的消息,字节长度为; emBits 整数OS2IP (EM) 的最大比特长度,>= 8hLen + 8sLen + 9 (sLen为salt的字节长度) 输出:“一致”或者“不一致” 图3 EMSA-PSS编解码方案 9.2 EMSA-PKCS1-V1_5编码方案EMSA-PKCS1-V1_5-ENCODE:(§9.2,见图4) 输入: M 消息; emLen 期望的编码消息EM的字节长度 输出: EM 编码后的消息,字节长度为emLen 注:EMSA-PKCS1-V1_5只有EMSA-PKCS1-V1_5-ENCODE 没有DECODE。 图4 EMSA-PKCS1-V1_5编解码方案 7.1 RSAES-OAEP加解密方案采用EME-OAEP编码方案 + RSAEP/RSADP加解密 此方案中存在可选的标签L RSAES-OAEP-ENCRYPT ((n, e), M, L)(§7.1.1,见图5) 输入 (n, e) RSA公钥 (记k为模数n的字节长)M 消息,字节长度为mLen, mLen £ k – 2hLen – 2L 可选的标签,没有时设为空串输出 C 密文,字节长度为k,或者错误信息RSAES-OAEP-DECRYPT (K, C, L) (§7.1.2,见图5) 输入 K RSA 私钥 (记k为模数n的字节长)C 密文,字节长度为k L 可选的标签,没有时设为空串输出 M 消息,字节长度为mLen, mLen £ k – 2hLen – 2,或者错误信息图5 加解密方案的流程 RSAES-OAEP采用EME-OAEP的encode/decode RSAESPKCS1-v1_5采用EME-PKCS-v1_5的encode/decode 7.2 RSAESPKCS1-v1_5加解密方案采用EME-PKCS-v1_5编码方案 + RSAEP/RSADP加解密 此方案中没有可选的标签L RSAES-PKCS1-V1_5-ENCRYPT ((n, e), M) (见图5) 整体流程同RSAES-OAEP-ENCRYPT ((n, e), M, L),仅有的差别在于: 没有可选的标签L编码方案用EME-PKCS-v1_5-encode代替EME-OAEP-encodeRSAES-PKCS1-V1_5-DECRYPT (K, C) (见图5) 整体流程同RSAES-OAEP-DECRYPT (K, C, L),仅有的差别在于: 没有可选的标签L编码方案用EME-PKCS-v1_5-decode代替EME-OAEP-decode 8.1 RSASSA-PSS签名验签方案采用EMSA-PSS编码方案 + RSASP/RSAVP签名验签 整个签名/验签流程与加解密流程非常相似。 RSASSA-PSS-SIGN (K, M) (§8.1.1,见图6) 输入 K RSA 私钥 (记k为模数n的字节长)M 消息,字节长度需满足杂凑函数的输出限制输出 S 签名,字节长度为k或者错误信息RSASSA-PSS-VERIFY ((n, e), M, S) (§8.1.2,见图6) 输入 (n, e) RSA 公钥 (记k为模数n的字节长)M 消息,字节长度需满足杂凑函数的输出限制S 签名,字节长度为k或者错误信息输出 “有效签名”或“无效签名”图6 签名验签的流程 8.2 RSASSA-PKCS1-v1_5签名验签方案采用EMSA-PKCS1-V1_5编码方案 + RSASP/RSAVP签名验签 整个签名/验签流程与加解密流程非常相似。 RSASSA-PKCS1-V1_5-SIGN (K, M) (§8.2.1,见图6) 整体流程同RSASSA-PSS-SIGN (K, M),仅有的差别在于: 编码方式不同,用EMSA-PKCS1-v1_5-encode代替EMSA-PSS-encodeRSASSA-PKCS1-V1_5-VERIFY ((n, e), M, S) (§8.2.1,见图6) 整体流程同RSASSA- PSS-VERIFY (K, M),仅有的差别在于: 编码方式不同,用EMSA-PKCS1-v1_5-encode代替EMSA-PSS-verify输出比较有微小差异:RSASSA-PSS-VERIFY在EMSA-PSS-verify中输出比较结果;PKCS1-V1_5中EMSA-PKCS1-v1_5-encode输出的EM和I2OSP(m)得到的EM比较得出结果。 A. ASN.1编码For the nine hash functions mentioned in Appendix B.1, the DER encoding T of the DigestInfo value is equal to the following: MD2: (0x)30 20 30 0c 06 08 2a 86 48 86 f7 0d 02 02 05 00 04 10 || H. MD5: (0x)30 20 30 0c 06 08 2a 86 48 86 f7 0d 02 05 05 00 04 10 || H. SHA-1: (0x)30 21 30 09 06 05 2b 0e 03 02 1a 05 00 04 14 || H. SHA-224: (0x)30 2d 30 0d 06 09 60 86 48 01 65 03 04 02 04 05 00 04 1c || H. SHA-256: (0x)30 31 30 0d 06 09 60 86 48 01 65 03 04 02 01 05 00 04 20 || H. SHA-384: (0x)30 41 30 0d 06 09 60 86 48 01 65 03 04 02 02 05 00 04 30 || H. SHA-512: (0x)30 51 30 0d 06 09 60 86 48 01 65 03 04 02 03 05 00 04 40 || H. SHA-512/224: (0x)30 2d 30 0d 06 09 60 86 48 01 65 03 04 02 05 05 00 04 1c || H. SHA-512/256: (0x)30 31 30 0d 06 09 60 86 48 01 65 03 04 02 06 05 00 04 20 || H. B. MGFMask generation functions MGF1,参见B.2 图7 MGF流程图 |
CopyRight 2018-2019 实验室设备网 版权所有 |